/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package EA_Model.IEC61970.Wires.impl;

import EA_Model.IEC61970.Domain.AbsoluteDateTime;
import EA_Model.IEC61970.Domain.Conductance;
import EA_Model.IEC61970.Domain.ReactivePower;
import EA_Model.IEC61970.Domain.Seconds;
import EA_Model.IEC61970.Domain.Susceptance;
import EA_Model.IEC61970.Domain.Voltage;
import EA_Model.IEC61970.Domain.VoltagePerReactivePower;

import EA_Model.IEC61970.Wires.ShuntCompensator;
import EA_Model.IEC61970.Wires.WiresPackage;

import org.eclipse.emf.common.notify.Notification;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;

import org.eclipse.emf.ecore.impl.ENotificationImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Shunt Compensator</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * <ul>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.ShuntCompensatorImpl#getAVRDelay <em>AVR Delay</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.ShuntCompensatorImpl#getB0PerSection <em>B0 Per Section</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.ShuntCompensatorImpl#getBPerSection <em>BPer Section</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.ShuntCompensatorImpl#getG0PerSection <em>G0 Per Section</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.ShuntCompensatorImpl#getGPerSection <em>GPer Section</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.ShuntCompensatorImpl#getMaximumSections <em>Maximum Sections</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.ShuntCompensatorImpl#getMaxU <em>Max U</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.ShuntCompensatorImpl#getMinU <em>Min U</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.ShuntCompensatorImpl#getNomQ <em>Nom Q</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.ShuntCompensatorImpl#getNomU <em>Nom U</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.ShuntCompensatorImpl#getNormalSections <em>Normal Sections</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.ShuntCompensatorImpl#getReactivePerSection <em>Reactive Per Section</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.ShuntCompensatorImpl#getSwitchOnCount <em>Switch On Count</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.ShuntCompensatorImpl#getSwitchOnDate <em>Switch On Date</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.ShuntCompensatorImpl#getVoltageSensitivity <em>Voltage Sensitivity</em>}</li>
 * </ul>
 * </p>
 *
 * @generated
 */
public class ShuntCompensatorImpl extends RegulatingCondEqImpl implements ShuntCompensator {
	/**
	 * The cached value of the '{@link #getAVRDelay() <em>AVR Delay</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getAVRDelay()
	 * @generated
	 * @ordered
	 */
	protected Seconds aVRDelay;

	/**
	 * The cached value of the '{@link #getB0PerSection() <em>B0 Per Section</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getB0PerSection()
	 * @generated
	 * @ordered
	 */
	protected Susceptance b0PerSection;

	/**
	 * The cached value of the '{@link #getBPerSection() <em>BPer Section</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getBPerSection()
	 * @generated
	 * @ordered
	 */
	protected Susceptance bPerSection;

	/**
	 * The cached value of the '{@link #getG0PerSection() <em>G0 Per Section</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getG0PerSection()
	 * @generated
	 * @ordered
	 */
	protected Conductance g0PerSection;

	/**
	 * The cached value of the '{@link #getGPerSection() <em>GPer Section</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getGPerSection()
	 * @generated
	 * @ordered
	 */
	protected Conductance gPerSection;

	/**
	 * The cached value of the '{@link #getMaximumSections() <em>Maximum Sections</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMaximumSections()
	 * @generated
	 * @ordered
	 */
	protected EA_Model.IEC61970.Domain.Integer maximumSections;

	/**
	 * The cached value of the '{@link #getMaxU() <em>Max U</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMaxU()
	 * @generated
	 * @ordered
	 */
	protected Voltage maxU;

	/**
	 * The cached value of the '{@link #getMinU() <em>Min U</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMinU()
	 * @generated
	 * @ordered
	 */
	protected Voltage minU;

	/**
	 * The cached value of the '{@link #getNomQ() <em>Nom Q</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNomQ()
	 * @generated
	 * @ordered
	 */
	protected ReactivePower nomQ;

	/**
	 * The cached value of the '{@link #getNomU() <em>Nom U</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNomU()
	 * @generated
	 * @ordered
	 */
	protected Voltage nomU;

	/**
	 * The cached value of the '{@link #getNormalSections() <em>Normal Sections</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNormalSections()
	 * @generated
	 * @ordered
	 */
	protected EA_Model.IEC61970.Domain.Integer normalSections;

	/**
	 * The cached value of the '{@link #getReactivePerSection() <em>Reactive Per Section</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getReactivePerSection()
	 * @generated
	 * @ordered
	 */
	protected ReactivePower reactivePerSection;

	/**
	 * The cached value of the '{@link #getSwitchOnCount() <em>Switch On Count</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getSwitchOnCount()
	 * @generated
	 * @ordered
	 */
	protected EA_Model.IEC61970.Domain.Integer switchOnCount;

	/**
	 * The cached value of the '{@link #getSwitchOnDate() <em>Switch On Date</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getSwitchOnDate()
	 * @generated
	 * @ordered
	 */
	protected AbsoluteDateTime switchOnDate;

	/**
	 * The cached value of the '{@link #getVoltageSensitivity() <em>Voltage Sensitivity</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getVoltageSensitivity()
	 * @generated
	 * @ordered
	 */
	protected VoltagePerReactivePower voltageSensitivity;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ShuntCompensatorImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return WiresPackage.Literals.SHUNT_COMPENSATOR;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Seconds getAVRDelay() {
		if (aVRDelay != null && aVRDelay.eIsProxy()) {
			InternalEObject oldAVRDelay = (InternalEObject)aVRDelay;
			aVRDelay = (Seconds)eResolveProxy(oldAVRDelay);
			if (aVRDelay != oldAVRDelay) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SHUNT_COMPENSATOR__AVR_DELAY, oldAVRDelay, aVRDelay));
			}
		}
		return aVRDelay;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Seconds basicGetAVRDelay() {
		return aVRDelay;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setAVRDelay(Seconds newAVRDelay) {
		Seconds oldAVRDelay = aVRDelay;
		aVRDelay = newAVRDelay;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SHUNT_COMPENSATOR__AVR_DELAY, oldAVRDelay, aVRDelay));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Susceptance getB0PerSection() {
		if (b0PerSection != null && b0PerSection.eIsProxy()) {
			InternalEObject oldB0PerSection = (InternalEObject)b0PerSection;
			b0PerSection = (Susceptance)eResolveProxy(oldB0PerSection);
			if (b0PerSection != oldB0PerSection) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SHUNT_COMPENSATOR__B0_PER_SECTION, oldB0PerSection, b0PerSection));
			}
		}
		return b0PerSection;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Susceptance basicGetB0PerSection() {
		return b0PerSection;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setB0PerSection(Susceptance newB0PerSection) {
		Susceptance oldB0PerSection = b0PerSection;
		b0PerSection = newB0PerSection;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SHUNT_COMPENSATOR__B0_PER_SECTION, oldB0PerSection, b0PerSection));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Susceptance getBPerSection() {
		if (bPerSection != null && bPerSection.eIsProxy()) {
			InternalEObject oldBPerSection = (InternalEObject)bPerSection;
			bPerSection = (Susceptance)eResolveProxy(oldBPerSection);
			if (bPerSection != oldBPerSection) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SHUNT_COMPENSATOR__BPER_SECTION, oldBPerSection, bPerSection));
			}
		}
		return bPerSection;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Susceptance basicGetBPerSection() {
		return bPerSection;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setBPerSection(Susceptance newBPerSection) {
		Susceptance oldBPerSection = bPerSection;
		bPerSection = newBPerSection;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SHUNT_COMPENSATOR__BPER_SECTION, oldBPerSection, bPerSection));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Conductance getG0PerSection() {
		if (g0PerSection != null && g0PerSection.eIsProxy()) {
			InternalEObject oldG0PerSection = (InternalEObject)g0PerSection;
			g0PerSection = (Conductance)eResolveProxy(oldG0PerSection);
			if (g0PerSection != oldG0PerSection) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SHUNT_COMPENSATOR__G0_PER_SECTION, oldG0PerSection, g0PerSection));
			}
		}
		return g0PerSection;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Conductance basicGetG0PerSection() {
		return g0PerSection;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setG0PerSection(Conductance newG0PerSection) {
		Conductance oldG0PerSection = g0PerSection;
		g0PerSection = newG0PerSection;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SHUNT_COMPENSATOR__G0_PER_SECTION, oldG0PerSection, g0PerSection));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Conductance getGPerSection() {
		if (gPerSection != null && gPerSection.eIsProxy()) {
			InternalEObject oldGPerSection = (InternalEObject)gPerSection;
			gPerSection = (Conductance)eResolveProxy(oldGPerSection);
			if (gPerSection != oldGPerSection) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SHUNT_COMPENSATOR__GPER_SECTION, oldGPerSection, gPerSection));
			}
		}
		return gPerSection;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Conductance basicGetGPerSection() {
		return gPerSection;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setGPerSection(Conductance newGPerSection) {
		Conductance oldGPerSection = gPerSection;
		gPerSection = newGPerSection;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SHUNT_COMPENSATOR__GPER_SECTION, oldGPerSection, gPerSection));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Integer getMaximumSections() {
		if (maximumSections != null && maximumSections.eIsProxy()) {
			InternalEObject oldMaximumSections = (InternalEObject)maximumSections;
			maximumSections = (EA_Model.IEC61970.Domain.Integer)eResolveProxy(oldMaximumSections);
			if (maximumSections != oldMaximumSections) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SHUNT_COMPENSATOR__MAXIMUM_SECTIONS, oldMaximumSections, maximumSections));
			}
		}
		return maximumSections;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Integer basicGetMaximumSections() {
		return maximumSections;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMaximumSections(EA_Model.IEC61970.Domain.Integer newMaximumSections) {
		EA_Model.IEC61970.Domain.Integer oldMaximumSections = maximumSections;
		maximumSections = newMaximumSections;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SHUNT_COMPENSATOR__MAXIMUM_SECTIONS, oldMaximumSections, maximumSections));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Voltage getMaxU() {
		if (maxU != null && maxU.eIsProxy()) {
			InternalEObject oldMaxU = (InternalEObject)maxU;
			maxU = (Voltage)eResolveProxy(oldMaxU);
			if (maxU != oldMaxU) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SHUNT_COMPENSATOR__MAX_U, oldMaxU, maxU));
			}
		}
		return maxU;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Voltage basicGetMaxU() {
		return maxU;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMaxU(Voltage newMaxU) {
		Voltage oldMaxU = maxU;
		maxU = newMaxU;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SHUNT_COMPENSATOR__MAX_U, oldMaxU, maxU));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Voltage getMinU() {
		if (minU != null && minU.eIsProxy()) {
			InternalEObject oldMinU = (InternalEObject)minU;
			minU = (Voltage)eResolveProxy(oldMinU);
			if (minU != oldMinU) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SHUNT_COMPENSATOR__MIN_U, oldMinU, minU));
			}
		}
		return minU;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Voltage basicGetMinU() {
		return minU;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMinU(Voltage newMinU) {
		Voltage oldMinU = minU;
		minU = newMinU;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SHUNT_COMPENSATOR__MIN_U, oldMinU, minU));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ReactivePower getNomQ() {
		if (nomQ != null && nomQ.eIsProxy()) {
			InternalEObject oldNomQ = (InternalEObject)nomQ;
			nomQ = (ReactivePower)eResolveProxy(oldNomQ);
			if (nomQ != oldNomQ) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SHUNT_COMPENSATOR__NOM_Q, oldNomQ, nomQ));
			}
		}
		return nomQ;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ReactivePower basicGetNomQ() {
		return nomQ;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setNomQ(ReactivePower newNomQ) {
		ReactivePower oldNomQ = nomQ;
		nomQ = newNomQ;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SHUNT_COMPENSATOR__NOM_Q, oldNomQ, nomQ));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Voltage getNomU() {
		if (nomU != null && nomU.eIsProxy()) {
			InternalEObject oldNomU = (InternalEObject)nomU;
			nomU = (Voltage)eResolveProxy(oldNomU);
			if (nomU != oldNomU) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SHUNT_COMPENSATOR__NOM_U, oldNomU, nomU));
			}
		}
		return nomU;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Voltage basicGetNomU() {
		return nomU;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setNomU(Voltage newNomU) {
		Voltage oldNomU = nomU;
		nomU = newNomU;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SHUNT_COMPENSATOR__NOM_U, oldNomU, nomU));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Integer getNormalSections() {
		if (normalSections != null && normalSections.eIsProxy()) {
			InternalEObject oldNormalSections = (InternalEObject)normalSections;
			normalSections = (EA_Model.IEC61970.Domain.Integer)eResolveProxy(oldNormalSections);
			if (normalSections != oldNormalSections) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SHUNT_COMPENSATOR__NORMAL_SECTIONS, oldNormalSections, normalSections));
			}
		}
		return normalSections;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Integer basicGetNormalSections() {
		return normalSections;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setNormalSections(EA_Model.IEC61970.Domain.Integer newNormalSections) {
		EA_Model.IEC61970.Domain.Integer oldNormalSections = normalSections;
		normalSections = newNormalSections;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SHUNT_COMPENSATOR__NORMAL_SECTIONS, oldNormalSections, normalSections));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ReactivePower getReactivePerSection() {
		if (reactivePerSection != null && reactivePerSection.eIsProxy()) {
			InternalEObject oldReactivePerSection = (InternalEObject)reactivePerSection;
			reactivePerSection = (ReactivePower)eResolveProxy(oldReactivePerSection);
			if (reactivePerSection != oldReactivePerSection) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SHUNT_COMPENSATOR__REACTIVE_PER_SECTION, oldReactivePerSection, reactivePerSection));
			}
		}
		return reactivePerSection;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ReactivePower basicGetReactivePerSection() {
		return reactivePerSection;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setReactivePerSection(ReactivePower newReactivePerSection) {
		ReactivePower oldReactivePerSection = reactivePerSection;
		reactivePerSection = newReactivePerSection;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SHUNT_COMPENSATOR__REACTIVE_PER_SECTION, oldReactivePerSection, reactivePerSection));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Integer getSwitchOnCount() {
		if (switchOnCount != null && switchOnCount.eIsProxy()) {
			InternalEObject oldSwitchOnCount = (InternalEObject)switchOnCount;
			switchOnCount = (EA_Model.IEC61970.Domain.Integer)eResolveProxy(oldSwitchOnCount);
			if (switchOnCount != oldSwitchOnCount) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SHUNT_COMPENSATOR__SWITCH_ON_COUNT, oldSwitchOnCount, switchOnCount));
			}
		}
		return switchOnCount;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Integer basicGetSwitchOnCount() {
		return switchOnCount;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setSwitchOnCount(EA_Model.IEC61970.Domain.Integer newSwitchOnCount) {
		EA_Model.IEC61970.Domain.Integer oldSwitchOnCount = switchOnCount;
		switchOnCount = newSwitchOnCount;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SHUNT_COMPENSATOR__SWITCH_ON_COUNT, oldSwitchOnCount, switchOnCount));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public AbsoluteDateTime getSwitchOnDate() {
		if (switchOnDate != null && switchOnDate.eIsProxy()) {
			InternalEObject oldSwitchOnDate = (InternalEObject)switchOnDate;
			switchOnDate = (AbsoluteDateTime)eResolveProxy(oldSwitchOnDate);
			if (switchOnDate != oldSwitchOnDate) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SHUNT_COMPENSATOR__SWITCH_ON_DATE, oldSwitchOnDate, switchOnDate));
			}
		}
		return switchOnDate;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public AbsoluteDateTime basicGetSwitchOnDate() {
		return switchOnDate;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setSwitchOnDate(AbsoluteDateTime newSwitchOnDate) {
		AbsoluteDateTime oldSwitchOnDate = switchOnDate;
		switchOnDate = newSwitchOnDate;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SHUNT_COMPENSATOR__SWITCH_ON_DATE, oldSwitchOnDate, switchOnDate));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public VoltagePerReactivePower getVoltageSensitivity() {
		if (voltageSensitivity != null && voltageSensitivity.eIsProxy()) {
			InternalEObject oldVoltageSensitivity = (InternalEObject)voltageSensitivity;
			voltageSensitivity = (VoltagePerReactivePower)eResolveProxy(oldVoltageSensitivity);
			if (voltageSensitivity != oldVoltageSensitivity) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SHUNT_COMPENSATOR__VOLTAGE_SENSITIVITY, oldVoltageSensitivity, voltageSensitivity));
			}
		}
		return voltageSensitivity;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public VoltagePerReactivePower basicGetVoltageSensitivity() {
		return voltageSensitivity;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setVoltageSensitivity(VoltagePerReactivePower newVoltageSensitivity) {
		VoltagePerReactivePower oldVoltageSensitivity = voltageSensitivity;
		voltageSensitivity = newVoltageSensitivity;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SHUNT_COMPENSATOR__VOLTAGE_SENSITIVITY, oldVoltageSensitivity, voltageSensitivity));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object eGet(int featureID, boolean resolve, boolean coreType) {
		switch (featureID) {
			case WiresPackage.SHUNT_COMPENSATOR__AVR_DELAY:
				if (resolve) return getAVRDelay();
				return basicGetAVRDelay();
			case WiresPackage.SHUNT_COMPENSATOR__B0_PER_SECTION:
				if (resolve) return getB0PerSection();
				return basicGetB0PerSection();
			case WiresPackage.SHUNT_COMPENSATOR__BPER_SECTION:
				if (resolve) return getBPerSection();
				return basicGetBPerSection();
			case WiresPackage.SHUNT_COMPENSATOR__G0_PER_SECTION:
				if (resolve) return getG0PerSection();
				return basicGetG0PerSection();
			case WiresPackage.SHUNT_COMPENSATOR__GPER_SECTION:
				if (resolve) return getGPerSection();
				return basicGetGPerSection();
			case WiresPackage.SHUNT_COMPENSATOR__MAXIMUM_SECTIONS:
				if (resolve) return getMaximumSections();
				return basicGetMaximumSections();
			case WiresPackage.SHUNT_COMPENSATOR__MAX_U:
				if (resolve) return getMaxU();
				return basicGetMaxU();
			case WiresPackage.SHUNT_COMPENSATOR__MIN_U:
				if (resolve) return getMinU();
				return basicGetMinU();
			case WiresPackage.SHUNT_COMPENSATOR__NOM_Q:
				if (resolve) return getNomQ();
				return basicGetNomQ();
			case WiresPackage.SHUNT_COMPENSATOR__NOM_U:
				if (resolve) return getNomU();
				return basicGetNomU();
			case WiresPackage.SHUNT_COMPENSATOR__NORMAL_SECTIONS:
				if (resolve) return getNormalSections();
				return basicGetNormalSections();
			case WiresPackage.SHUNT_COMPENSATOR__REACTIVE_PER_SECTION:
				if (resolve) return getReactivePerSection();
				return basicGetReactivePerSection();
			case WiresPackage.SHUNT_COMPENSATOR__SWITCH_ON_COUNT:
				if (resolve) return getSwitchOnCount();
				return basicGetSwitchOnCount();
			case WiresPackage.SHUNT_COMPENSATOR__SWITCH_ON_DATE:
				if (resolve) return getSwitchOnDate();
				return basicGetSwitchOnDate();
			case WiresPackage.SHUNT_COMPENSATOR__VOLTAGE_SENSITIVITY:
				if (resolve) return getVoltageSensitivity();
				return basicGetVoltageSensitivity();
		}
		return super.eGet(featureID, resolve, coreType);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eSet(int featureID, Object newValue) {
		switch (featureID) {
			case WiresPackage.SHUNT_COMPENSATOR__AVR_DELAY:
				setAVRDelay((Seconds)newValue);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__B0_PER_SECTION:
				setB0PerSection((Susceptance)newValue);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__BPER_SECTION:
				setBPerSection((Susceptance)newValue);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__G0_PER_SECTION:
				setG0PerSection((Conductance)newValue);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__GPER_SECTION:
				setGPerSection((Conductance)newValue);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__MAXIMUM_SECTIONS:
				setMaximumSections((EA_Model.IEC61970.Domain.Integer)newValue);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__MAX_U:
				setMaxU((Voltage)newValue);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__MIN_U:
				setMinU((Voltage)newValue);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__NOM_Q:
				setNomQ((ReactivePower)newValue);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__NOM_U:
				setNomU((Voltage)newValue);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__NORMAL_SECTIONS:
				setNormalSections((EA_Model.IEC61970.Domain.Integer)newValue);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__REACTIVE_PER_SECTION:
				setReactivePerSection((ReactivePower)newValue);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__SWITCH_ON_COUNT:
				setSwitchOnCount((EA_Model.IEC61970.Domain.Integer)newValue);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__SWITCH_ON_DATE:
				setSwitchOnDate((AbsoluteDateTime)newValue);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__VOLTAGE_SENSITIVITY:
				setVoltageSensitivity((VoltagePerReactivePower)newValue);
				return;
		}
		super.eSet(featureID, newValue);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eUnset(int featureID) {
		switch (featureID) {
			case WiresPackage.SHUNT_COMPENSATOR__AVR_DELAY:
				setAVRDelay((Seconds)null);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__B0_PER_SECTION:
				setB0PerSection((Susceptance)null);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__BPER_SECTION:
				setBPerSection((Susceptance)null);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__G0_PER_SECTION:
				setG0PerSection((Conductance)null);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__GPER_SECTION:
				setGPerSection((Conductance)null);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__MAXIMUM_SECTIONS:
				setMaximumSections((EA_Model.IEC61970.Domain.Integer)null);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__MAX_U:
				setMaxU((Voltage)null);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__MIN_U:
				setMinU((Voltage)null);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__NOM_Q:
				setNomQ((ReactivePower)null);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__NOM_U:
				setNomU((Voltage)null);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__NORMAL_SECTIONS:
				setNormalSections((EA_Model.IEC61970.Domain.Integer)null);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__REACTIVE_PER_SECTION:
				setReactivePerSection((ReactivePower)null);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__SWITCH_ON_COUNT:
				setSwitchOnCount((EA_Model.IEC61970.Domain.Integer)null);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__SWITCH_ON_DATE:
				setSwitchOnDate((AbsoluteDateTime)null);
				return;
			case WiresPackage.SHUNT_COMPENSATOR__VOLTAGE_SENSITIVITY:
				setVoltageSensitivity((VoltagePerReactivePower)null);
				return;
		}
		super.eUnset(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean eIsSet(int featureID) {
		switch (featureID) {
			case WiresPackage.SHUNT_COMPENSATOR__AVR_DELAY:
				return aVRDelay != null;
			case WiresPackage.SHUNT_COMPENSATOR__B0_PER_SECTION:
				return b0PerSection != null;
			case WiresPackage.SHUNT_COMPENSATOR__BPER_SECTION:
				return bPerSection != null;
			case WiresPackage.SHUNT_COMPENSATOR__G0_PER_SECTION:
				return g0PerSection != null;
			case WiresPackage.SHUNT_COMPENSATOR__GPER_SECTION:
				return gPerSection != null;
			case WiresPackage.SHUNT_COMPENSATOR__MAXIMUM_SECTIONS:
				return maximumSections != null;
			case WiresPackage.SHUNT_COMPENSATOR__MAX_U:
				return maxU != null;
			case WiresPackage.SHUNT_COMPENSATOR__MIN_U:
				return minU != null;
			case WiresPackage.SHUNT_COMPENSATOR__NOM_Q:
				return nomQ != null;
			case WiresPackage.SHUNT_COMPENSATOR__NOM_U:
				return nomU != null;
			case WiresPackage.SHUNT_COMPENSATOR__NORMAL_SECTIONS:
				return normalSections != null;
			case WiresPackage.SHUNT_COMPENSATOR__REACTIVE_PER_SECTION:
				return reactivePerSection != null;
			case WiresPackage.SHUNT_COMPENSATOR__SWITCH_ON_COUNT:
				return switchOnCount != null;
			case WiresPackage.SHUNT_COMPENSATOR__SWITCH_ON_DATE:
				return switchOnDate != null;
			case WiresPackage.SHUNT_COMPENSATOR__VOLTAGE_SENSITIVITY:
				return voltageSensitivity != null;
		}
		return super.eIsSet(featureID);
	}

} //ShuntCompensatorImpl
